package bz.ziro.kanbe.controller;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import bz.ziro.kanbe.dao.PageDao;
import bz.ziro.kanbe.dao.SiteDao;
import bz.ziro.kanbe.model.Page;
import bz.ziro.kanbe.model.Site;

/**
 * POST系共通処理
 * @author Administrator
 */
public abstract class PostController extends Controller {

    @Override
    public Navigation run() {
    	//IDを取得
    	String pageId = (String)requestScope("id");
    	//遷移先を作成
    	Navigation redirectNavi = redirect("/?id=" + pageId); 
    	//POSTじゃない場合
    	if ( !request.getMethod().toLowerCase().equals("post") ) {
    		return redirectNavi;
    	}

    	//公開しているものを取得
    	Site site = SiteDao.findPublish();
    	//対象のページキーを取得
    	Page page = PageDao.find(site.getKey().getId(), Long.valueOf(pageId));
    
    	//子の処理を行う
    	post(site,page,redirectNavi);
    	
        return redirectNavi;
    }
   
    /**
     * ＰＯＳＴ処理
     * @param page 
     * @param site 
     * @param redirectNavi 
     */
    protected abstract void post(Site site, Page page, Navigation redirectNavi);
}
